Lazy Load – Hiệu ứng load ảnh tuần tự và mượt mà cho Blogger

Chào các bạn, nếu trang web/blog của bạn là một trang chuyên chia sẻ hình ảnh hoặc là một trang có nhiều hình ảnh hiển thị thì một tiện ích nào đó giúp những hình ảnh đó load tuần từ và lần lượt chắc chắn sẽ rất cần thiết. Trong bài viết này mình xin giới thiệu đến các bạn một hiệu ứng load ảnh nhẹ nhàng và mượt mà có tên Lazy Load.
Nói đơn giản hiệu ứng này sẽ thay thế những hình ảnh chưa load xong bằng một hình ảnh khác, rồi sau đó sẽ dùng hiệu ứng fadeIn trong javascript để load ảnh đó. Gợi cho ta cảm giác mượt mà và dễ chịu khi nhìn vào!


CÁC BƯỚC THỰC HIỆN

Bước 1. Đăng nhập Blogger ➔ Chủ đề (Mẫu) ➔ Chỉnh sửa HTML.
Bước 2. Chèn đoạn script sau vào trước thẻ </head> trong template.

<script type=’text/javascript’>
//<![CDATA[
(function($) { $.fn.lazyload = function(options) { var settings = { threshold : 0, failurelimit : 0, event : “scroll”, effect : “show”, container : window }; if(options) { $.extend(settings, options); } var elements = this; if (“scroll” == settings.event) { $(settings.container).bind(“scroll”, function(event) { var counter = 0; elements.each(function() { if ($.abovethetop(this, settings) || $.leftofbegin(this, settings)) { /* Nothing. */ } else if (!$.belowthefold(this, settings) && !$.rightoffold(this, settings)) { $(this).trigger(“appear”); } else { if (counter++ > settings.failurelimit) { return false; } } }); var temp = $.grep(elements, function(element) { return !element.loaded; }); elements = $(temp); }); } this.each(function() { var self = this; if (undefined == $(self).attr(“original”)) { $(self).attr(“original”, $(self).attr(“src”)); } if (“scroll” != settings.event || undefined == $(self).attr(“src”) || settings.placeholder == $(self).attr(“src”) || ($.abovethetop(self, settings) || $.leftofbegin(self, settings) || $.belowthefold(self, settings) || $.rightoffold(self, settings) )) { if (settings.placeholder) { $(self).attr(“src”, settings.placeholder); } else { $(self).removeAttr(“src”); } self.loaded = false; } else { self.loaded = true; } $(self).one(“appear”, function() { if (!this.loaded) { $(“<img />”) .bind(“load”, function() { $(self) .hide() .attr(“src”, $(self).attr(“original”)) [settings.effect](settings.effectspeed); self.loaded = true; }) .attr(“src”, $(self).attr(“original”)); }; }); if (“scroll” != settings.event) { $(self).bind(settings.event, function(event) { if (!self.loaded) { $(self).trigger(“appear”); } }); } }); $(settings.container).trigger(settings.event); return this; }; $.belowthefold = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).height() + $(window).scrollTop(); } else { var fold = $(settings.container).offset().top + $(settings.container).height(); } return fold <= $(element).offset().top – settings.threshold; }; $.rightoffold = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).width() + $(window).scrollLeft(); } else { var fold = $(settings.container).offset().left + $(settings.container).width(); } return fold <= $(element).offset().left – settings.threshold; }; $.abovethetop = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).scrollTop(); } else { var fold = $(settings.container).offset().top; } return fold >= $(element).offset().top + settings.threshold + $(element).height(); }; $.leftofbegin = function(element, settings) { if (settings.container === undefined || settings.container === window) { var fold = $(window).scrollLeft(); } else { var fold = $(settings.container).offset().left; } return fold >= $(element).offset().left + settings.threshold + $(element).width(); }; $.extend($.expr[‘:’], { “below-the-fold” : “$.belowthefold(a, {threshold : 0, container: window})”, “above-the-fold” : “!$.belowthefold(a, {threshold : 0, container: window})”, “right-of-fold” : “$.rightoffold(a, {threshold : 0, container: window})”, “left-of-fold” : “!$.rightoffold(a, {threshold : 0, container: window})” }); })(jQuery);//]]>
</script>
<script type=”text/javascript”>
$(function() { $(“img“) .lazyload({ placeholder : “https://2.bp.blogspot.com/-8wGWeetqFJs/WMFH81Oo4zI/AAAAAAAAAEg/UsvLH1YtG7UxLqWPWmFYFHe8m2ZyiWzdwCLcB/s1600/www-bacsiwindows-com.jpg“, effect: “fadeIn” }); });</script>

CHỈNH SỬA

  • Thay link màu đỏ thành link ảnh thay thế khi chưa load ảnh xong.
  • Thẻ img là áp dụng cho tất cả hình ảnh trong blog, nếu bạn muốn giới hạn một thành phần nào đó thì chỉ cần sửa lại: #content-wrapper img hoặc #PopularPosts1 img,…
Bước 3. Lưu chủ đề (mẫu).

Leave a Comment

sơn epoxy / sơn sàn epoxy / cửa lưới chống muỗi / vách ngăn lướii chống muỗi / cửa lùa chống muỗi / vệ sinh công nghiệp / đánh bóng sàn bê tông / vệ sinh nhà máy / dịch vụ giặt thảmm / vệ sinh nhà hàng / vệ sinh tòa nhà / dịch vụ vệ sinh kính / vệ sinh khách sạn / vệ sinh chung cư / dịch vụ cắt cỏ / đánh bóng kính / diệt côn trùng / diệt mối / diệt kiến / diệt muỗi / diệt ruồi / diệt gián / diệt chuột / dọn bể nước ngầm / phụ kiện mái che / cơ khí chế tạo / mái che di động / rèm nhựa / vách nhựa ngăn phòng lạnh / rèm nhựa phòng lạnh / dù che nắng / mái kéo di động / nhà bạt di động / mái xếp di động / mái hiên di động / thay bạt mái hiên di động / bạt che nắng / phụ kiện mái che di động / mái che sân thượng / mái che quán cafe / mái che di động miền bắc / mái che di động miền nam / bạt che di động hcm /